Variables Used by Implicit Rules

Contents|Index|Previous|Next
Variables used by implicit rules

The commands in built-in implicit rules make liberal use of certain predefined variables. You can alter these variables in the makefile, with arguments to make, or in the environment to alter how the implicit rules work without redefining the rules themselves.

For example, the command used to compile a C source file actually says ‘$(CC) -c $(CFLAGS) $(CPPFLAGS)’. The default values of the variables used are ‘cc’ and nothing, resulting in the command ‘cc -c’. By redefining ‘CC’ to ‘ncc’, you could cause ‘ncc’ to be used for all C compilations performed by the implicit rule. By redefining ‘CFLAGS’to be ‘-g’, you could pass the ‘-g’ option to each compilation. All implicit rules that do C compilation use ‘$(CC)’ to get the program name for the compiler and all include ‘$(CFLAGS)’ among the arguments given to the compiler.

The variables used in implicit rules fall into two classes:

- Those being names of programs (like CC).
- Those containing arguments for the programs (like CFLAGS). (The “name of a program” may also contain some command arguments, but it must start with an actual executable program name.) If a variable value contains more than one argument, separate them with spaces.

The following are variables used as names of programs in built-in rules.

AR

Archive-maintaining program; default: ‘ar’.

AS

Program for doing assembly; default: ‘as’.

CC

Program for compiling C programs; default: ‘cc’.

CXX

Program for compiling C++ programs; default: ‘g++’.

CO

Program for extracting a file from RCS; default: ‘co’.

CPP

Program for running the C preprocessor, with results to standard output; default: ‘$(CC) -E’.

FC

Program for compiling or preprocessing Fortran and Ratfor programs; default: ‘f77’.

GET

Program for extracting a file from SCCS; default: ‘get’.

LEX

Program to use to turn Lex grammars into C programs or Ratfor programs; default: ‘lex’.

PC

Program for compiling Pascal programs; default: ‘pc’.

YACC

Program to use to turn Yacc grammars into C programs; default: ‘yacc’.

YACCR

Program to use to turn Yacc grammars into Ratfor programs; default: ‘yacc -r’.

MAKEINFO

Program to convert a Texinfo source file into an Info file; default: ‘makeinfo’.

TEX

Program to make TEX DVI files from TEX source; default: ‘tex’.

TEXI2DVI

Program to make TEX DVI files from Texinfo source; default: ‘texi2dvi’.

WEAVE

Program to translate Web into TEX; default: ‘weave’.

CWEAVE

Program to translate C Web into TEX; default: ‘cweave’.

TANGLE

Program to translate Web into Pascal; default: ‘tangle’.

CTANGLE

Program to translate C Web into C; default: ‘ctangle’.

RM

Command to remove a file; default: ‘rm -f’.

The following are variables whose values are additional arguments for the previous list of programs associated with variables. The default values for all of these is the empty string, unless otherwise noted.

ARFLAGS

Flags to give the archive-maintaining program; default: ‘rv’.

ASFLAGS

Extra flags to give to the assembler (when explicitly invoked on a ‘.s’ or ‘.S’ file).

CFLAGS

Extra flags to give to the C compiler.

CXXFLAGS

Extra flags to give to the C++ compiler.

COFLAGS

Extra flags to give to the RCS co program.

CPPFLAGS

Extra flags to give to the C preprocessor and programs that use it (the C and Fortran compilers).

FFLAGS

Extra flags to give to the Fortran compiler.

GFLAGS

Extra flags to give to the SCCS get program.

LDFLAGS

Extra flags to give to compilers when they are supposed to invoke the linker, ‘ld’.

LFLAGS

Extra flags to give to Lex.

PFLAGS

Extra flags to give to the Pascal compiler.

RFLAGS

Extra flags to give to the Fortran compiler for Ratfor programs.

YFLAGS

Extra flags to give to Yacc.

Top|Contents|Index|Previous|Next